package clases
{
	import mx.collections.ArrayCollection;

	public final class Utils
	{
		public static function redondear(numero:Number, precision:int):Number{
			var redondeado:int = 0;
			var i:int = 0
			var precisar:Number = 1.0;
			for(i = 0; i < precision; i++){
				precisar = precisar * 10.0;
			}
			numero = numero*precisar;
			redondeado = Math.round(numero);
			
			var retornar:Number = redondeado;
			retornar = retornar/precisar;
			
			return retornar;
		}
		
		public static function FechaToString(fecha:Date):String {
			// Formato Cadena Fecha: DD/MM/AAAA
			
			var cadString:String = "";
			if(fecha.date < 10)
				cadString = "0";
			cadString = cadString + fecha.date.toString();
			cadString = cadString + "/";
			if(fecha.month < 9)
				cadString = cadString + "0";
			cadString = cadString + (fecha.date + 1).toString();
			
			cadString = cadString + "/"+ fecha.fullYear.toString();
			
			return cadString;
		}
		
		public static function StringToFecha(cadFecha:String):Date {
			// Formato Cadena Fecha: DD/MM/AAAA HH:MM:SS 
			var dia:int = int(cadFecha.substr(0, 2));
			var mes:int = int(cadFecha.substr(3, 2));
			var anio:int = int(cadFecha.substr(6, 4));
			var hora:int = int(cadFecha.substr(11, 2));
			var min:int = int(cadFecha.substr(14, 2));
			var seg:int = int(cadFecha.substr(17, 2));
			
			var dtRet:Date = new Date();
			
			dtRet.fullYear = anio;
			dtRet.month = mes - 1;
			dtRet.date = dia;
			dtRet.hours = hora;
			dtRet.minutes = min;
			dtRet.seconds = seg;
			
			return dtRet;
		}
		
		public static function calcularPromedio(lista:ArrayCollection, campo:String):Number{
			var prom:Number = 0;
			
			for each(var item:Object in lista){
				prom = prom + Number(item[campo]);
			}
			
			prom = prom/lista.length;
			
			return prom;
		}
		
		public static function maxValOfListProperty(lista:ArrayCollection, atributo:String):Number{
			var max:Number = Number.MIN_VALUE;
			for each(var item:Object in lista){
				if(Number(item[atributo]) > max){
					max = Number(item[atributo]);
				}
			}
			
			return max;
		}
		
		public static function minValOfListProperty(lista:ArrayCollection, atributo:String):Number{
			var min:Number = Number.MAX_VALUE;
			for each(var item:Object in lista){
				if(Number(item[atributo]) < min){
					min = Number(item[atributo]);
				}
			}
			
			return min;
		}
		
		public static function dateValue(fecha:Date):int{
			return fecha.fullYear*10000 + (fecha.month + 1)*100 + fecha.date;
		}
		
		public static function timeValue(fecha:Date):int{
			return fecha.hours*100 + fecha.minutes;
		}
		
	}
}